package xx.services.demo.inter;

import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;

/**
 * 布局中List列表服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/demo/list")
 * 
 * @author chenxiang 2010-12-20
 */
public interface IListInterface
{

    /**
     * 新增一个列表demo。<br>
     * 注：增加成功后要自动增加一条默认的参数(param)
     * 
     * @POST
     * 
     * @param title-@FormParam("title")
     *            列表标题
     * @param container-@FormParam("container")
     *            列表容器，一般是一个div，如：<div class="container">${container}</div>
     * @param templet-@FormParam("templet")
     *            列表行模板
     * @param demo-@FormParam("demo")
     *            列表demo实例
     * @param shape-@FormParam("shape")
     *            列表图片样子
     * @param description-@FormParam("description")
     *            列表描述
     * @param sign-@FormParam("sign")
     *            列表标志，从Entity继承过来的实体才有标志
     * @param clazz-@FormParam("clazz")
     *            列表对应的实体class名称，<br>
     *            如：评论列表对应comment，回复列表对应reply，文章列表、文档列表、相册列表等从Entity继承过来的都对应entity。<br>
     *            注：从Entity继承过来的必须通过sign来区分，其他的如回复reply的sign为0.
     * @return 新列表实体对象
     * @author chenxiang
     */
    public String add(@FormParam("title")
    String title, @FormParam("container")
    String container, @FormParam("templet")
    String templet, @FormParam("demo")
    String demo, @FormParam("shape")
    String shape, @FormParam("description")
    String description, @FormParam("sign")
    int sign, @FormParam("clazz")
    String clazz);

    /**
     * 删除列表demo。<br>
     * 
     * @DELETE
     * @Path ("/{list_id}")
     * @param listId-@PathParam("list_id")
     *            列表ID，多个ID用“_”隔开
     * @return true-删除成功，string-其他删除失败（string就是失败原因）
     * @author chenxiang
     */
    public String delete(@PathParam("list_id")
    String listId);

    /**
     * 获取list列表。<br>
     * 
     * @GET
     * 
     * @param sign-@QueryParam("sign")
     *            sign标志，当sign小于0时获取全部
     * @param clazz-@QueryParam("clazz")
     *            列表对应的class名称，当clazz为null时表示获取全部
     * @return 一组list列表实体
     * @author chenxiang
     */
    public String gets(@QueryParam("sign")
    int sign, @QueryParam("clazz")
    String clazz);

    /**
     * 获取一个列表demo。 <br>
     * 
     * @GET
     * @Path ("/{list_id}")
     * @param listId-@PathParam("list_id")
     *            列表ID
     * @return list列表实体
     * @author chenxiang
     */
    public String get(@PathParam("list_id")
    long listId);

    /**
     * 修改一个列表demo。<br>
     * 
     * @PUT
     * @Path ("/{list_id}")
     * @param listId-@PathParam("list_id")
     *            列表ID
     * @param title-@FormParam("title")
     *            列表标题
     * @param container-@FormParam("container")
     *            列表容器，一般是一个div，如：<div class="container">${container}</div>
     * @param templet-@FormParam("templet")
     *            列表行模板
     * @param demo-@FormParam("demo")
     *            列表demo实例
     * @param shape-@FormParam("shape")
     *            列表图片样子
     * @param description-@FormParam("description")
     *            列表描述
     * @param sign-@FormParam("sign")
     * @param clazz-@FormParam("clazz")
     *            列表对应的实体class名称，<br>
     *            如：评论列表对应comment，回复列表对应reply，文章列表、文档列表、相册列表等从Entity继承过来的都对应entity。<br>
     *            注：从Entity继承过来的必须通过sign来区分，其他的如回复reply的sign为0.
     * @return 新列表实体对象
     * @author chenxiang
     */
    public String update(@PathParam("list_id")
    long listId, @FormParam("title")
    String title, @FormParam("container")
    String container, @FormParam("templet")
    String templet, @FormParam("demo")
    String demo, @FormParam("shape")
    String shape, @FormParam("description")
    String description, @FormParam("sign")
    int sign, @FormParam("clazz")
    String clazz);

    // /**
    // * 新增一个列表参数demo。<br>
    // *
    // * @POST
    // * @Path ("/{list_id}/param")
    // * @param listId-@PathParam("list_id")
    // * 列表ID
    // * @param pagesize-@FormParam("pagesize")
    // * 每页显示多少记录
    // * @param pageno-@FormParam("pageno")
    // * 从第几页开始取数据，取值范围：1-n
    // * @param cond-@FormParam("cond")
    // * 取值条件where标准条件表达式
    // * @param orderfield-@FormParam("orderfield")
    // * 排序字段，也就是SQL语句中order by {orderfield}
    // * @param fields-@FormParam("fields")
    // * 需要返回的字段集，默认返回所有
    // * @return 新列表参数实体
    // * @author chenxiang
    // */
    // public String addParam(@PathParam("list_id")
    // long listId, @FormParam("pagesize")
    // int pagesize, @FormParam("pageno")
    // int pageno, @FormParam("cond")
    // String cond, @FormParam("orderfield")
    // String orderfield, @FormParam("fields")
    // String fields);

    /**
     * 获取list对应的参数。<br>
     * 
     * @GET
     * @Path ("/{list_id}/param")
     * @param listId-@PathParam("list_id")
     *            列表ID
     * @return 参数实体
     * @author chenxiang
     */
    public String getParam(@PathParam("list_id")
    long listId);
}
